home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / programr / jfklib.zip / TOPLEVEL.CPP < prev    next >
Text File  |  1991-05-10  |  3KB  |  169 lines

  1. /*
  2.     TOPLEVEL.CPP - Generic Handling of TopLevel-Windows
  3.     (C) 1990 by Joachim Kainz 'On a mission from Bhudda'
  4. */
  5.     #include "toplevel.hpp"
  6.     #include "about.hpp"
  7.  
  8.     METHOD TOPLEVEL::WMClose ()
  9.     {
  10.         DestroyWindow (GetWindowHandle ());
  11.  
  12.         return 0l;
  13.     }
  14.     EXPORT TOPLEVEL::TOPLEVEL (
  15.             int            nCmdShow,
  16.             int            x,
  17.             int            y,
  18.             int            cx,
  19.             int            cy,
  20.             long        lStyle,
  21.             LPSTR       lpName,
  22.             LPSTR        lpMenu,
  23.             long        lExStyle,
  24.             WORD        wStyle,
  25.             HCURSOR        hCursor,
  26.             HICON        hIcon,
  27.             HBRUSH        hBackGrnd,
  28.             WORD        wClsExtra,
  29.             WORD        wWndExtra,
  30.             LPSTR        lpParam,
  31.             LPSTR        lpClass,
  32.             FARPROC2    lpFnProc
  33.          ) :
  34.         WINDOW (
  35.             SW_HIDE,
  36.             x,
  37.             y,
  38.             cx,
  39.             cy,
  40.             lStyle,
  41.             "",
  42.             NULL,
  43.             NULL,
  44.             lExStyle,
  45.             wStyle,
  46.             hCursor,
  47.             hIcon,
  48.             hBackGrnd,
  49.             wClsExtra,
  50.             wWndExtra,
  51.             lpParam,
  52.             lpClass,
  53.             lpFnProc
  54.         )
  55.     {
  56.         HMENU hMenu = NULL;
  57.  
  58.         bHelpActive = FALSE;
  59.  
  60.         if (lpMenu)
  61.             hMenu = LoadMenu (GetInstance (), lpMenu);
  62.  
  63.         if (hMenu)
  64.             SetMenu (GetWindowHandle (), hMenu);
  65.  
  66.         SetWindowText (self, lpName  );
  67.         ShowWindow    (self, nCmdShow);
  68.     }
  69.  
  70.  
  71.     METHOD TOPLEVEL::WMCommand (WORD wID, WORD wMsg, HWND hCtl)
  72.     {
  73.         switch (wID) {
  74.  
  75.           case ID_FILE_EXIT:
  76.             return SendMessage (self, WM_CLOSE, 0, 0L);
  77.  
  78.           case ID_HELP_ABOUT:
  79.             ABOUT about (MAKEINTRESOURCE (ID_HELP_ABOUT), GetWindowHandle ());
  80.  
  81.             about.SetItemText (
  82.                 ID_APPNAME,
  83.                 MAKEINTRESOURCE (ID_APPNAME)
  84.             );
  85.             about.modal ();
  86.  
  87.             return 0l;
  88.  
  89.           case HELP_HELPONHELP:
  90.             if (WinHelp (GetWindowHandle (), "", HELP_HELPONHELP, 0l))
  91.                 bHelpActive = TRUE;
  92.  
  93.             return 0l;
  94.  
  95.         }
  96.         return NULL;
  97.     }
  98.  
  99.     METHOD TOPLEVEL::WMDestroy ()
  100.     {
  101.         if (bHelpActive)
  102.             WinHelp (GetWindowHandle (), "", HELP_QUIT, 0l);
  103.  
  104.         return WINDOW::WMDestroy ();
  105.     }
  106.  
  107.     METHOD TOPLEVEL::WMSysCommand (WORD wID, POINT pt)
  108.     {
  109.         return DefWindowProc (
  110.                 GetWindowHandle (),
  111.                 WM_SYSCOMMAND,
  112.                 wID,
  113.                 *(long*)&pt
  114.                );
  115.     }
  116.  
  117.     METHOD TOPLEVEL::WndDlgProc (WORD wMsg, WORD wParam, long lParam)
  118.     {
  119.         switch (wMsg) {
  120.  
  121.           case WM_COMMAND:
  122.             return WMCommand (
  123.                         wParam,
  124.                         HIWORD (lParam),
  125.                         LOWORD (lParam)
  126.                    );
  127.  
  128.           case WM_SYSCOMMAND:
  129.             return WMSysCommand (wParam, MAKEPOINT (lParam));
  130.  
  131.           case WM_TIMER:
  132.             return WMTimer (wParam, (FARPROC) lParam);
  133.  
  134.           case WM_HSCROLL:
  135.             return WMHScroll (wParam, HIWORD (lParam));
  136.  
  137.           case WM_VSCROLL:
  138.             return WMVScroll (wParam, HIWORD (lParam));
  139.  
  140.           case WM_INITMENU:
  141.             return WMInitMenu (wParam);
  142.  
  143.           case WM_INITDIALOG:
  144.             return WMInitDialog (lParam);
  145.  
  146.           case WM_INITMENUPOPUP:
  147.             return WMInitMenuPopUp    (
  148.                         wParam,
  149.                         LOWORD (lParam),
  150.                         HIWORD (lParam)
  151.                      );
  152.  
  153.           case WM_MENUSELECT:
  154.             return WMMenuSelect (wParam, LOWORD (lParam));
  155.  
  156.           case WM_MENUCHAR:
  157.             return WMMenuChar (
  158.                         wParam,
  159.                         HIWORD (lParam),
  160.                         LOWORD (lParam)
  161.                    );
  162.  
  163.           case WM_ENTERIDLE:
  164.             return WMEnterIdle (wParam, LOWORD (lParam));
  165.  
  166.         }
  167.  
  168.         return DefWindowProc (GetWindowHandle (), wMsg, wParam, lParam);
  169.     }